package cn.linran.feignclient;


import cn.linran.User;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

/**
 * UserFeign的托底工厂类
 */
@Component
public class UserFeignClientFallbackFactory implements FallbackFactory<UserFeignClient> {

    /**
     * 生产托底类的方法，需要使用匿名内部类的方式，返回要托底接口的实现类，实现类方法就是托底方法
     * @param throwable
     * @return
     */
    @Override
    public UserFeignClient create(Throwable throwable) {
        // 1.打印接口错误，方便查找错误
        throwable.printStackTrace();
//        return new UserFeignClient() {
//            @Override
//            public User getById(Long id) {
//                return new User(-1L, "触发熔断！", "用户服务不可用-方式二：FallbackFactory！！");
//            }
//        };
       return id -> new User(-1L, "触发熔断！", "用户服务不可用-方式二：FallbackFactory！");
    }
}